/**
 * 将链表元素循环右移
 * O(n) 
 * O(1)
 */


#include"LinkedList.h"
/**
 * @param l 不带头节点的链表
 * @param k 循环右移的步数,这里的k比链表长度小
 */
LinkedList *converse(LinkedList *l,int k){
    int n=1;
    LinkedList *p=l;
    while (p->next!=nullptr)
    {
        p=p->next;
        n++;
    }
    p->next=l;//将链表构成循环
    for(int i=0;i<n-k;i++){
        p=p->next;
    }


    //下面这两句话，可以这样理解，l获取了p->next的这个数据的指针所指的地址
    //当p->next=nullptr的时候，只是将p节点的next指针清空，而l的数据不会清除
    l=p->next;//重新指定头
    p->next=nullptr;//然后断开

    return l;

    

}